home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_09_12 / 9n12044a < prev    next >
Text File  |  1991-10-13  |  3KB  |  85 lines

  1. #include "solid.h"
  2.  
  3. /* global variables */
  4. struct obj_defn *defn_ptr[MAX_TYPES] = {NULL, NULL,
  5.     NULL, NULL}; /* pointers to object definitions */
  6. struct solid_obj *obj_first = (struct solid_obj *)NULL;
  7.     /* pointer to first object in scene */
  8. int sweeps = 20; /* number of sweeps to construct
  9.     sphere; must be even */
  10. int facets = 36; /* number of facets per sweep */
  11. float proj_z = 100.0; /* distance between viewer and
  12.     model */
  13. float proj_d = 10.0; /* distance between viewer and
  14.     picture plane */
  15. BOOL init_screen = FALSE; /* indicates whether screen
  16.     is initialized */
  17. int maxx, maxy; /* maximum x and y screen coords */
  18. float border = 0.05; /* fraction of graphics screen to
  19.     use as a border when maximizing image size */
  20. float screen_x_min, screen_x_max, screen_y_min,
  21.     screen_y_max; /* minimum and maximum coordinates
  22.     used to maximize image size */
  23. int color_bkgd = BLUE, color_visible = RED,
  24.     color_hidden = WHITE; /* color selections for
  25.     background, visible lines, hidden lines */
  26. enum LINESTYLE disp_hidden = LINE_NOSHOW; /* how to
  27.     display hidden lines: don't display, broken line,
  28.     solid line */
  29. float light_x, light_y, light_z; /* light source
  30.     coordinates */
  31. int render_opt = TRUE; /* rendering option */
  32. void main(void)
  33. {
  34.     struct solid_obj *obj_ptr;
  35.     int gdriver = DETECT, gmode;
  36.     if (registerbgidriver(EGAVGA_driver) < 0)
  37.         quit(ERR_DRIVER, __FILE__, __LINE__);
  38.     initgraph(&gdriver, &gmode, "");
  39.     setbkcolor(color_bkgd);
  40.     setcolor(color_visible);
  41.     maxx = getmaxx();
  42.     maxy = getmaxy();
  43.     outtext("Copyright (c) 1991 by Saul Mooallem");
  44.     light_x = 300.0;
  45.     light_y = 300.0;
  46.     light_z = 300.0;
  47.     obj_ptr = make_object(CUBE_OBJ); /* construct
  48.         instance */
  49.     obj_ptr->color = YELLOW;
  50.     obj_ptr->scale = 7.0; /* scaling factor */
  51.     obj_ptr->xlate[0] = 20.0; /* translation */
  52.     obj_ptr->xlate[1] = -20.0;
  53.     obj_ptr->xlate[2] = 15.0;
  54.     obj_ptr->YAW = PI / 8.0; /* rotation */
  55.     obj_ptr->ROLL = PI / 16.0;
  56.     obj_ptr->PITCH = 3.0 * PI / 16.0;
  57.     obj_ptr = make_object(SPHERE_OBJ);
  58.     obj_ptr->color = RED;
  59.     obj_ptr->scale = 30.0;
  60.     obj_ptr->YAW = PI / 4.0;
  61.     obj_ptr->ROLL = 3 * PI / 4.0;
  62.     obj_ptr->PITCH = 3.0 * PI / 8.0;
  63.     obj_ptr->xlate[1] = -12.0;
  64.     obj_ptr = make_object(CYLIND_OBJ);
  65.     obj_ptr->color = YELLOW;
  66.     obj_ptr->scale = 6.0;
  67.     obj_ptr->YAW = PI / 4.0;
  68.     obj_ptr->ROLL = PI / 4.0;
  69.     obj_ptr->PITCH = PI / 4.0;
  70.     obj_ptr->xlate[0] = -8.0;
  71.     obj_ptr->xlate[1] = 8.0;
  72.     obj_ptr->xlate[2] = 25.0;
  73.     obj_ptr = make_object(CONE_OBJ);
  74.     obj_ptr->color = RED;
  75.     obj_ptr->scale = 12.0;
  76.     obj_ptr->YAW = 3 * PI / 4.0;
  77.     obj_ptr->ROLL = 7 * PI / 4.0;
  78.     obj_ptr->PITCH = PI / 4.0;
  79.     obj_ptr->xlate[0] = 15.0;
  80.     obj_ptr->xlate[1] = 8.0;
  81.     show_scene();
  82.     getch();
  83.     closegraph();
  84. }
  85.